﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EFramework.Web.TypeExtension;

namespace  RzCorportativo.Views.Cadastros
{
    public partial class Consulta : BasePage
    {
        private void LoadScreen()
        {
            if (!string.IsNullOrEmpty(this.Request.QueryString["consultaId"]))
            {
                RzCorportativo.Lib.Consulta consulta = RzCorportativo.Lib.Consulta.CreateInstance(IntExtension.Parse(this.Request.QueryString["consultaId"], 0));
                RzCorportativo.Lib.Triagem triagem = RzCorportativo.Lib.Triagem.Listar(new RzCorportativo.Lib.Triagem() { ConsultaId = IntExtension.Parse(this.Request.QueryString["consultaId"], 0) }).FirstOrDefault();
                if (AppSession.Medico != null && AppSession.Medico.MedicoId.Equals(consulta.MedicoId) && (!consulta.Atendida && (consulta.DateConsulta >= DateTime.Now && consulta.HoraEntrada < DateTime.Now.TimeOfDay)))
                {
                    this.salvar.Visible = this.Diagnostico.Enabled = this.Sintomas.Enabled = this.Receituario.Enabled = this.Atestado.Enabled = true;
                }
                this.triagem.Load(triagem);
                var atestado = RzCorportativo.Lib.Atestado.Listar(new RzCorportativo.Lib.Atestado() { Consulta = consulta }).FirstOrDefault();
                if (atestado == null)
                {
                    atestado = new RzCorportativo.Lib.Atestado();
                    atestado.Consulta = consulta;
                }
                if (atestado.Consulta == null || atestado.Consulta.ConsultaId == 0)
                    atestado.Consulta = consulta;
                this.Atestado.Load(atestado);
                if (consulta != null)
                {
                    if (consulta.Medico != null)
                    {
                        if (consulta.Medico.Pessoa != null)
                            this.Medico.Text = consulta.Medico.Pessoa.Nome;
                        if(consulta.Medico.EspecialidadeMedico != null)
                            this.Especialidade.Text = consulta.Medico.EspecialidadeMedico.Descricao;
                    }
                    if(consulta.Paciente != null)
                        this.Paciente.Text = consulta.Paciente.Nome;
                    this.ConsultaId.Value = consulta.ConsultaId.ToString();
                    this.Data.Text = consulta.DateConsulta.ToString("dd/MM/yyyy");
                    this.Receituario.HtmlString = consulta.Receita;
                    this.Sintomas.HtmlString = consulta.Sintomas;
                    this.Diagnostico.HtmlString = consulta.Diagnostico;
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
                return;
            this.LoadScreen();
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            Alert alerta = new Alert("erroGeral", this);
            alerta.AlertType = AlertType.Error;
            RzCorportativo.Lib.Consulta consulta = RzCorportativo.Lib.Consulta.CreateInstance(EFramework.Web.TypeExtension.IntExtension.Parse(this.ConsultaId.Value, 0));         
            consulta.Atendida = true;
            consulta.Atestado = this.Atestado.Value;
            consulta.Sintomas = this.Sintomas.HtmlString;
            consulta.Receita = this.Receituario.HtmlString;
            consulta.Diagnostico = this.Diagnostico.HtmlString;
            try
            {
                if (consulta.Salvar())
                {
                    this.Response.Redirect(this.ResolveUrl("~/Views/Consulta/Consultas.aspx?op=cs"));
                }
                else
                {
                    alerta.Add("vergonhoso", "Desculpe isso é vergonhoso");
                    alerta.Add("erro", "Não foi possível salvar os dados da consulta tente mais tarde");
                }
            }
            catch (Exception ex)
            {
                alerta.Add("vergonhoso", "Desculpe isso é vergonhoso");
                alerta.Add("exception", "Ocorreu a seguinte exeção:");
                alerta.Add("exceptionDesc", ex.Message);

            }
            if (alerta.HasMessage)
                alerta.Show();
        }
    }
}